package persistencia.compartido;

import compartido.IEntidad;

public class CargadorDeClases {
	protected static CargadorDeClases instancia = null;
	
	protected CargadorDeClases() {}
	
	public static CargadorDeClases getInstancia() {
		if (instancia == null)
			instancia = new CargadorDeClases();
		return instancia;
	}
	
	public Class<?> cargarClase(String nombre) {
		ClassLoader cargador = this.getClass().getClassLoader();
		Class<?> clase = null;
		try {
			clase = cargador.loadClass(nombre);
		} catch (ClassNotFoundException e) {
			clase = null;
		}
		return clase;
	}
	
	@SuppressWarnings("unchecked")
	public Tipo<IEntidad> armarTipoDeEntidad(String tipo) {
		Tipo<IEntidad> entidad = null;
		
		Class<?> clase = cargarClase(tipo);
		
		entidad = new Tipo<IEntidad>((Class<? extends IEntidad>) clase);
		
		return entidad;
	}
}
